package com.gopay.remote.cps.cashier;

import com.gopay.common.domain.cashier.PayDoneResult;
import com.gopay.common.exception.CPSException;
import com.gopay.common.exception.GopayException;

/**
 * 收银台支付完成回调接口
 * 
 * @CashierPayCallbackRemoteService.java
 * @author zhanglei
 * @2013-1-14 下午4:40:51 www.gopay.com.cn Inc.All rights reserved.
 */
public interface CashierPayCallbackRemoteService {
    /**
     * 支付完成
     * 
     * @param result
     * @throws CPSException
     */
    String finish(PayDoneResult result) throws GopayException;

    /**
     * 登录后网银支付，发往银行前创建充值订单
     * 
     * @param orderId
     *            - 本次支付的订单的orderId
     * @param amt
     *            - 充值订单金额
     * @param payChannel
     *            - 付款通道类型
     * @return - 返回充值订单的订单号orderId
     * @throws GopayException
     */
    String saveInchargeOrder(String orderId, String amt, String payChannel, String outStlmId, String operId)
            throws GopayException;

    /**
     * 跨境大额汇款拆分，登录后网银支付，发往银行前创建汇款汇总支付订单
     * 
     * @param orderId
     * @param payChannel
     * @param outStlmId
     * @param operId
     * @return 汇款汇总支付订单的订单号
     * @throws GopayException
     */
    String saveRemitTotalPayOrder(String orderId, String payChannel, String outStlmId, String operId) 
    		throws GopayException;

    /**
     * 进口网关批量支付，网银支付，发往银行前创建批量支付订单
     * @param orderId
     * @param payChannel
     * @param outStlmId
     * @param operId
     * @return 批量支付订单的订单号
     * @throws GopayException
     */
    String saveBatchPayOrder(String orderId, String payChannel, String outStlmId, String operId)
    		throws GopayException;
}
